///******************** NG.Respate(C)  **********************************
//* 产品名称: Respate 科技
//* 文件名称: signal.c
//* 程序作者: 雷帕特公司(南宫子萍)
//* 程序版本: V1.1														   
//* 编制日期: 2019/1/29
//* 功能描述: 系统日志
//* QQ:	2085827949
//**********************************************************************/

#include <unistd.h>
#include "stdio.h"
#include "stdlib.h"
#include "lap_lib.h"
#include "laperro.h"

#if 0


#include <signal.h>
// int sigemptyset(sigset_t *set);
// int sigfillset(sigset_t *set);
// int sigaddset(sigset_t *set, int signum);
// int sigdelset(sigset_t *set, int signum);
// int sigismember(const sigset_t *set, int signum);  // 判断信号集 是否包含 sig  1: 包含   0: 不包含


// 虽然SUSv3并未定义NSIG，但是大多数UNⅨ实现都支持这一常量。只不过，要想
// 使其可见，可能需要使用特定于实现的编译器选项。例如，在 Linux中，就必须定义如下
// 功能测试宏之一： BSD SOURCE、 SVID SOURCE或者 GNU SOURCE.
#ifndef NSIG
#define NSIG 32
#endif

static int Lap_sig()
{
  sigset_t set;
  int ret = -1;

  ret = sigemptyset(&set);  // 清空信号集
  LAP_NegErrRet(ret,-1,"sigemptyset err");

  // ret = sigfillset(&set);   // 填充信号集
  // LAP_NegErrRet(ret,-1,"sigfillset err");

  ret = sigaddset(&set,SIGINT);   // 添加信号
  LAP_NegErrRet(ret,-1,"sigfillset err");

  ret = sigaddset(&set,SIGUSR1);   // 添加信号
  LAP_NegErrRet(ret,-1,"sigfillset err");

  int i = 0;
  for(i=1; i < NSIG; i++)
  {
    if(sigismember(&set,i)) psignal(i,"sig in set");
  }

  printf("\r\n删除信号 SIGINT:\n");
  ret = sigdelset(&set,SIGINT);   // 添加信号
  LAP_NegErrRet(ret,-1,"sigfillset err");
  for(i=1; i < NSIG; i++)
  {
    if(sigismember(&set,i)) psignal(i,"sig in set");
  }

  return 0 ;
}


int main(void)
{
  LAP_ErrOutSet(NULL);  // 错误输出 初始化
  Lap_sig();
}
#endif